package edu.utn.tacs.grupouno.negocio;

import java.util.Observable;

import edu.utn.tacs.grupouno.exception.TurnoNoDisponibleException;

public class Turno extends Observable {
	private Analisis analisis;
	private Paciente paciente;
	private TurnoSemanal turnoSemanal;
	private EstadoTurno estado;
	
	public Turno() {
		estado = new DisponibleEstadoTurno();
	}
	
	public Turno(TurnoSemanal turnoSemanal) {
		this();
		this.turnoSemanal = turnoSemanal;
	}
	
	public boolean isDisponible() {
		return estado.isDisponible();
	}
	
	public void asignar(Paciente paciente, Analisis analisis) {
		if(isDisponible()) {
			this.paciente = paciente;
			this.analisis = analisis;
			this.estado = new AsignadoEstado();
		} else {
			throw new TurnoNoDisponibleException();
		}
	}
	
	public void setAsistioPaciente() {
		estado = new AsistioEstadoTurno();
		setChanged();
		notifyObservers();
	}
	
	public void setNoAsistioPaciente() {
		estado = new NoAsistioPacienteEstadoTurno();
	}
	
	public boolean pacienteAsistio() {
		return estado.pacienteAsistio();
	}
	
	public void setAnalisis(Analisis analisis) {
		this.analisis = analisis;
	}
	public Analisis getAnalisis() {
		return analisis;
	}
	public void setPaciente(Paciente paciente) {
		this.paciente = paciente;
	}
	public Paciente getPaciente() {
		return paciente;
	}
	public void setTurnoSemanal(TurnoSemanal turnoSemanal) {
		this.turnoSemanal = turnoSemanal;
	}
	public TurnoSemanal getTurnoSemanal() {
		return turnoSemanal;
	}
	
	public String getHorario() {
		return turnoSemanal.getHorario();
	}
	
}
